/**
 * 
 */
package com.nari.baseinfo.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.nari.baseinfo.dao.ICityDao;
import com.nari.baseinfo.dao.IQueryerDao;
import com.nari.baseinfo.model.IQueryer;
import com.nari.coreframe.service.GenericServiceImpl;
import com.nari.platform.model.PageCond;
import com.nari.platform.model.ResultWithPageCond;

/**
 * 
 * @author Xiaopeng
 * @date 2013-8-1
 */
public class QueryerServiceImpl extends GenericServiceImpl<IQueryer, String> implements
		IQueryerService {
	private ICityDao iCityDao;

	/**
	 * 查询器分页查询
	 * @param queryerName 查询器名称(可选)
	 * @param queryerNo 查询器编号(可选)
	 * @param districtCityID 所属区级机构(可选)
	 * @param capitalCityID 所属市级机构(可选)
	 * @param provinceCityID 所属省级机构(可选)
	 * @param pageCond
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-8-27
	 */
	public ResultWithPageCond<IQueryer> queryQueryerPage(String queryerName, String queryerNo, 
			String districtCityID, String capitalCityID, String provinceCityID, 
			PageCond pageCond) throws Exception {
		IQueryerDao iQueryerDao = (IQueryerDao) this.getiGenericDao();
		return iQueryerDao.queryQueryerPage(queryerName, queryerNo, districtCityID, capitalCityID, provinceCityID, pageCond);
	}
	
	/**
	 * 通过查询器列表查询与之关联的行政机构ID-机构名称映射表
	 * @param queryerList 查询器列表，若列表为空，则返回空的映射表
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-8-7
	 */
	public Map<String, String> queryReferCitysByQueryerList(List<IQueryer> queryerList) throws Exception {
		List<String> cityIDList = null;
		if(queryerList!=null && queryerList.size()>0) {
			cityIDList = new ArrayList<String>();
			for(IQueryer queryer: queryerList) {
				cityIDList.add(queryer.getProvinceCityID());
				cityIDList.add(queryer.getCapitalCityID());
				cityIDList.add(queryer.getDistrictCityID());
			}
		}
		return iCityDao.queryIdNameMapByIDList(cityIDList);
	}
	
	/**
	 * 统计相同查询器编号的查询器数量，避免系统录入相同查询器编号的查询器信息
	 * @param queryerNo
	 * @param queryerUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-7-24
	 */
	public int countByQueryerNo(String queryerNo, String queryerUID) throws Exception {
		IQueryerDao iQueryerDao = (IQueryerDao) this.getiGenericDao();
		return iQueryerDao.countByQueryerNo(queryerNo, queryerUID);
	}

	/**
	 * @return the iCityDao
	 */
	public ICityDao getiCityDao() {
		return iCityDao;
	}

	/**
	 * @param iCityDao the iCityDao to set
	 */
	public void setiCityDao(ICityDao iCityDao) {
		this.iCityDao = iCityDao;
	}
	
}
